package com.divemotor.ventarepuestosinternet.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "TAL_MAE_TIPO_COMPONENTE")
@NamedQueries({
		@NamedQuery(name="TipoComponente.comboTipoComponente", query="SELECT new com.divemotor.ventarepuestosinternet.beans.adapter.DataAdapter(p.idTipoComponente, p.nombre) " +
																	 "FROM TipoComponente p WHERE p.estado=:estado  ORDER BY nombre asc "),
		@NamedQuery(name="TipoComponente.comboTipoComponenteVeh", 
					query="SELECT new com.divemotor.ventarepuestosinternet.beans.adapter.DataAdapter(tc.idTipoComponente, tc.nombre) " +
						  "FROM ModeloFabrica mf, TipoComponente tc, VehiculoModeloFabrica vmf " +
						  "where mf.tipoComponente.idTipoComponente = tc.idTipoComponente and mf.modeloFabricaPK.idModeloFabrica = vmf.modeloFabrica.modeloFabricaPK.idModeloFabrica " +
						  "and vmf.vehiculo.chasis = :chasis"),
})
public class TipoComponente  implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(name = "COD_TIPO_COMPONENTE", length = 3)
	private String idTipoComponente;
	@Column(name = "DES_TIPO_COMPONENTE", length = 100)
	private String nombre;
	@Column(name = "IND_ACTIVO", length = 1)
	private String estado;
	@OneToMany(fetch=FetchType.LAZY, mappedBy="tipoComponente")
	private List<ModeloFabrica> listaModeloFabrica;

	public TipoComponente() {
		
	}
	
	public TipoComponente(String idTipoComponente, String nombre) {
		this.idTipoComponente = idTipoComponente;
		this.nombre = nombre;
	}

	public TipoComponente(String idTipoComponente) {
		this.idTipoComponente = idTipoComponente;
	}

	public String getIdTipoComponente() {
		return idTipoComponente;
	}

	public void setIdTipoComponente(String idTipoComponente) {
		this.idTipoComponente = idTipoComponente;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((idTipoComponente == null) ? 0 : idTipoComponente.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj){
			return true;
		}
		if (obj == null){
			return false;
		}
		if (getClass() != obj.getClass()){
			return false;
		}
		TipoComponente other = (TipoComponente) obj;
		if (idTipoComponente == null) {
			if (other.idTipoComponente != null){
				return false;
			}
		} else if (!idTipoComponente.equals(other.idTipoComponente)){
			return false;
		}
		return true;
	}
	
}
